package com.kt.common.basetype

/**
 *
 *
 *
 */
fun main() {

    /*val a = -128
    val b: Int? = a
    val c: Int? = a
    print(eq2I(b,c))//自动装箱拆箱机制（ -128 - 127）为true  否则为false*/


    // 假想的代码，实际上并不能编译：
    /*val a: Int? = 1 // 一个装箱的 Int (java.lang.Integer)
    val b: Long? = a // 隐式转换产生一个装箱的 Long (java.lang.Long)
    print(b == a) // 惊！这将输出“false”鉴于 Long 的 equals() 会检测另一个是否也为 Long*/

/*    val x = 5 / 2
//println(x == 2.5) // ERROR: Operator '==' cannot be applied to 'Int' and 'Double'
    println(x == 2)*/

//    print(4L/2 == 2L)
//    print(3/2.toDouble())
//    print(1.shl(2) and 0x000FF000)
//    print(1 shl 2 and 0x000FF000)
    //arrayOf(1,2,3).printArray()
    //arrayOfNulls<Int>(5).printArray()
    /*val array = Array(10) { i ->
        i + 1
    }
    array.printArray()*/

    /*val intArray = IntArray(5)
    var b: UByte = 1u  // UByte，已提供预期类型
    val s: UShort = 1u // UShort，已提供预期类型
    val l: ULong = 1u  // ULong，已提供预期类型*/

    var st = "12"
    val str = """
        ${st + 1}
    """.trimIndent()
    print(str)

}

fun <T> Array<T>.printArray() {
    this.forEach {
        print("$it, ")
    }
}

fun eq2I(b: Int?, c: Int?): Boolean {
    return b === c
}

